package cn.tedu.design;

import javax.lang.model.SourceVersion;

/**
 * @Author 金帮嘉诚
 * @Date 2021-06-10 周四 15:13
 */
/*本类用于完成OOP汽车设计综合案例*/
public class DesignCar {
    public static void main(String[] args) {
        //Car类
        Car c=new Car();
//        System.out.println(c.color);
        System.out.println("c.getColor() = " + c.getColor());
        c.start();//父类自己的功能
        c.stop();//父类自己的功能
//        c.fly()父类不能使用子类的特有功能
        //9.BMW类
        BMW b=new BMW();
        System.out.println("b.color = " + b.color);//子类的成员变量
        System.out.println("b.getColor() = " + b.getColor());//父类的成员变量
        b.start();//没重写，使用的是父类的方法
        b.stop();//重写了，使用的是子类重写以后的的方法
        //Porsche类
        Porsche p=new Porsche();
        System.out.println("p.getColor() = " + p.getColor());//null
        System.out.println("p.color = " + p.color);//黑不溜秋的白
        p.start();//使用的是继承过来的父类中的功能
        p.fly();//使用的是子类特有的功能

    }
}
class Car {
    //2.属性--通过成员变量来描述
    //2.1属性封装--关键字private封装
    private String brand;//品牌
    private String color;//颜色

    private double price;//价格
    private double size;//尺寸

    //3.行为--通过方法来描述
    public void start() {
        System.out.println("我的车车启动啦Start~~~~~~");
    }

    public void stop() {
        System.out.println("哎呀妈，我的车车熄火了Stop~~~~~~");
    }

    //2.2给被封装的属性提供公共的属性值设置和访问方式--SetXXX() GetXXX()
    //快捷方式 Alt+Insert键--Getter and Setter--全选--enter


    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public double getSize() {
        return size;
    }

    public void setSize(double size) {
        this.size = size;
    }
}
//4.
class BMW extends Car {
    String color = "五彩斑斓的黑";

    //6.Override
    @Override
    public void stop() {
        System.out.println("宝马当然要帅气的停的稳当些啦~");
    }
}
//5.
class Porsche extends Car {
    String color = "黑不溜秋的白";

    //7.新增子类特有功能--父类不可使用
    public void fly() {
        System.out.println("启动加速度，我要起飞啦~");
    }
}
